
/*
 * Copyright (C) 2008-2009 Archie L. Cobbs. All rights reserved.
 *
 * $Id: FieldModelSwitch.java 173 2009-11-10 17:08:19Z archie.cobbs $
 */

package org.dellroad.sidekar.schema.model;

/**
 * Visitor pattern interface for concrete {@link FieldModel} subclasses.
 *
 * @param <R> switch method return type
 */
public interface FieldModelSwitch<R> {

    R caseReferenceFieldModel(ReferenceFieldModel fieldModel);
    R caseSetFieldModel(SetFieldModel fieldModel);
    R caseMapFieldModel(MapFieldModel fieldModel);
    R caseListFieldModel(ListFieldModel fieldModel);
    R caseStringFieldModel(StringFieldModel fieldModel);
    R caseDateFieldModel(DateFieldModel fieldModel);
    R caseBigIntegerFieldModel(BigIntegerFieldModel fieldModel);
    R caseArrayFieldModel(ArrayFieldModel fieldModel);
    R caseBooleanFieldModel(BooleanFieldModel fieldModel);
    R caseByteFieldModel(ByteFieldModel fieldModel);
    R caseCharacterFieldModel(CharacterFieldModel fieldModel);
    R caseShortFieldModel(ShortFieldModel fieldModel);
    R caseIntegerFieldModel(IntegerFieldModel fieldModel);
    R caseFloatFieldModel(FloatFieldModel fieldModel);
    R caseDoubleFieldModel(DoubleFieldModel fieldModel);
    R caseLongFieldModel(LongFieldModel fieldModel);
}

